package models

// AuthKey 存储认证密钥信息
type AuthKey struct {
	*GormModel               // 嵌入基础模型 (Id uint PK, CreatedAt, UpdatedAt, DeletedAt)
	AuthKeyValue      string `gorm:"type:varchar(128);not null" json:"auth_key_value"`
	Description       string `gorm:"type:varchar(255)" json:"description"`
	CanPush           bool   `gorm:"not null;default:true" json:"can_push"`
	CanPull           bool   `gorm:"not null;default:true" json:"can_pull"`
	AllowedPushTopics string `gorm:"type:text" json:"allowed_push_topics"`         // 存储允许推送的 Topic 列表
	AllowedPullTopics string `gorm:"type:text" json:"allowed_pull_topics"`         // 存储允许拉取的 Topic 列表
	IsActive          bool   `gorm:"not null;default:true;index" json:"is_active"` // 添加索引
}

// TableName 自定义表名
func (AuthKey) TableName() string {
	return "auth_keys"
}

type ReqAuthKey struct {
	Description       string `json:"description"`
	CanPush           bool   `json:"can_push"`
	CanPull           bool   `json:"can_pull"`
	AllowedPushTopics string `json:"allowed_push_topics"`
	AllowedPullTopics string `json:"allowed_pull_topics"`
	IsActive          bool   `json:"is_active"`
}
